์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ตฌ์ถ์ ์ํ ๋น ๋ฅด๊ณ ๊ฐ๋ฒผ์ด JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Inferno.js๋ฅผ ํ์ํด ๋ณด์ธ์. ๊ธฐ๋ฅ, ์ฅ์ ๋ฐ React์์ ๋น๊ต๋ฅผ ํ์ธํด ๋ณด์ธ์.
Inferno: ๊ณ ์ฑ๋ฅ React ์ ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ธต ๋ถ์
๋์์์ด ์งํํ๋ ํ๋ก ํธ์๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ฑ๋ฅ๊ณผ ํจ์จ์ฑ์ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. React๊ฐ ์ฌ์ ํ ์ง๋ฐฐ์ ์ธ ์์น๋ฅผ ์ฐจ์งํ๊ณ ์์ง๋ง, ํน์ ์๋๋ฆฌ์ค์์๋ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ๊ฐ๋ ฅํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ๊ทธ์ค ํ๋๊ฐ ๋ฐ๋ก ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ตฌ์ถ์ ์ํ ๊ฐ๋ณ๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Inferno์ ๋๋ค. Inferno๋ React์์ ์๊ฐ์ ์ป์์ง๋ง, ์๋นํ ์ฑ๋ฅ ํฅ์๊ณผ ๋ ์์ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ์๋ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ต์ ํ๋ฅผ ์ถ๊ตฌํ๋ ๊ฐ๋ฐ์๋ค์๊ฒ ๋งค๋ ฅ์ ์ธ ์ ํ์ง๊ฐ ๋ฉ๋๋ค.
Inferno๋ ๋ฌด์์ธ๊ฐ?
Inferno๋ React์ ๋ง์ ์ ์ฌ์ ์ ๊ณต์ ํ๋ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, React ๊ฐ๋ฐ์๊ฐ ๋น๊ต์ ์ฝ๊ฒ ๋ฐฐ์ฐ๊ณ ์ฑํํ ์ ์์ต๋๋ค. React์ ๋ง์ฐฌ๊ฐ์ง๋ก Inferno๋ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ์ ๊ฐ์ DOM(Document Object Model)์ ํ์ฉํ์ฌ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ํจ์จ์ ์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค. ๊ทธ๋ฌ๋ Inferno์ ํต์ฌ์ ์ธ ์ฐจ์ด์ ์ ๋ ๋๋ง ํ์ดํ๋ผ์ธ๊ณผ ๋ด๋ถ ์ต์ ํ์ ์์ผ๋ฉฐ, ์ด๋ ํนํ ๋น๋ฒํ UI ์ ๋ฐ์ดํธ์ ๋ณต์กํ ์ปดํฌ๋ํธ ํธ๋ฆฌ๊ฐ ํฌํจ๋ ์๋๋ฆฌ์ค์์ ์๋นํ ์ฑ๋ฅ ํฅ์์ ๊ฐ์ ธ์ต๋๋ค.
Inferno์ ์ฃผ์ ํน์ง ๋ฐ ์ฅ์
1. ๋ฐ์ด๋ ์ฑ๋ฅ
Inferno์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ์ฑ๋ฅ์ ๋๋ค. ๋ฒค์น๋งํฌ๋ ๋ ๋๋ง ์๋, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ๋ฐ ์ ๋ฐ์ ์ธ ๋ฐ์์ฑ์ ํฌํจํ ๋ค์ํ ์งํ์์ Inferno๊ฐ React๋ฅผ ๋ฅ๊ฐํจ์ ์ผ๊ด๋๊ฒ ๋ณด์ฌ์ค๋๋ค. ์ด๋ฌํ ์ฐ์ํ ์ฑ๋ฅ์ ๋ช ๊ฐ์ง ์ฃผ์ ์ต์ ํ์์ ๋น๋กฏ๋ฉ๋๋ค:
- ํจ์จ์ ์ธ ๊ฐ์ DOM: Inferno์ ๊ฐ์ DOM ๊ตฌํ์ ๊ณ ๋๋ก ์ต์ ํ๋์ด ์ค์ DOM์ ์ ๋ฐ์ดํธํ๋ ๋ฐ ํ์ํ ์์ ๋์ ์ต์ํํฉ๋๋ค. ๋ ์ค๋งํธํ ์ฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ๊ณผ ์ต์ ํ๋ ๋น๊ต(diffing)์ ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ํ์ํ ๋ณ๊ฒฝ ์ฌํญ๋ง ์๋ณํฉ๋๋ค.
- ๊ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋: Inferno๋ ๊ฐ๋ณ๊ฒ ์ค๊ณ๋์ด React์ ๋นํด ๋ ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐจ์งํฉ๋๋ค. ์ด๋ ๋ฆฌ์์ค๊ฐ ์ ํ๋ ์ฅ์น ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํนํ ์ ์ฉํฉ๋๋ค.
- ๋ ๋น ๋ฅธ ๋ ๋๋ง: Inferno์ ๋ ๋๋ง ํ์ดํ๋ผ์ธ์ ์๋๋ฅผ ์ํด ๊ฐ์ํ๋์ด React๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ์ ๋ฐ์ดํธ๋ฅผ ๋ ๋๋งํ ์ ์์ต๋๋ค. ์ด๋ ๋ ๋ถ๋๋ฝ๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ผ๋ก ์ด์ด์ง๋๋ค.
์์: ์์ฃผ ์ ๋ฐ์ดํธ๋๋ ๋ฐ์ดํฐ๋ฅผ ํ์ํ๋ ์ค์๊ฐ ๋์๋ณด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ฐํด ๋ณด์ธ์. ์ด๋ฌํ ์๋๋ฆฌ์ค์์ Inferno์ ์ฑ๋ฅ ์ด์ ์ ํนํ ๋๋๋ฌ์ง๋ฉฐ, ๋ง์ ์์ ์ ๋ฐ์ดํธ๊ฐ ์๋๋ผ๋ UI๊ฐ ๊ณ์ํด์ ๋ฐ์์ฑ์ ์ ์งํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
2. ๋ ์์ ๋ฒ๋ค ํฌ๊ธฐ
Inferno๋ React๋ณด๋ค ํจ์ฌ ์์ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด ๋ค์ด๋ก๋ ์๊ฐ์ ์ต์ํํ๋ ๊ฒ์ด ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์์ ์ ๋๋ค. ๋ ์์ ๋ฒ๋ค ํฌ๊ธฐ๋ ํนํ ๋ชจ๋ฐ์ผ ์ฅ์น์ ๋๋ฆฐ ๋คํธ์ํฌ ์ฐ๊ฒฐ ํ๊ฒฝ์์ ์ด๊ธฐ ํ์ด์ง ๋ก๋ฉ ์๊ฐ์ ๋จ์ถํ๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํต๋๋ค.
์์: ๋์ญํญ์ด ์ ํ๋ ์ ํฅ ์์ฅ์ ๋์์ผ๋ก ํ๋ ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA)์ ๊ฒฝ์ฐ, React ๋์ Inferno๋ฅผ ์ ํํ๋ฉด ์ด๊ธฐ ๋ก๋ฉ ์๊ฐ์ด ๋์ ๋๊ฒ ๊ฐ์ ๋์ด ์ฌ์ฉ์ ์ฐธ์ฌ๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
3. React์ ์ ์ฌํ API
Inferno์ API๋ React์ ๋งค์ฐ ์ ์ฌํ์ฌ React ๊ฐ๋ฐ์๋ค์ด Inferno๋ก ์ฝ๊ฒ ์ ํํ ์ ์์ต๋๋ค. ์ปดํฌ๋ํธ ๋ชจ๋ธ, JSX ๊ตฌ๋ฌธ, ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๋ ๋ชจ๋ ์ต์ํ ๊ฐ๋ ์ ๋๋ค. ์ด๋ ํ์ต ๊ณก์ ์ ์ค์ด๊ณ ๊ฐ๋ฐ์๋ค์ด ๊ธฐ์กด React ์ง์์ ํ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค.
4. JSX ๋ฐ ๊ฐ์ DOM ์ง์
Inferno๋ JSX๋ฅผ ์ง์ํ์ฌ ๊ฐ๋ฐ์๋ค์ด ์ต์ํ๊ณ ํํ๋ ฅ์ด ํ๋ถํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ UI ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ ์ ์๋๋ก ํฉ๋๋ค. ๋ํ ๊ฐ์ DOM์ ํ์ฉํ์ฌ ์ ์ฒด ํ์ด์ง๋ฅผ ๋ค์ ๋ก๋ํ ํ์ ์์ด ์ค์ DOM์ ํจ์จ์ ์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ๋ ๋ถ๋๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
5. ๊ฒฝ๋ ๋ฐ ๋ชจ๋์
Inferno์ ๋ชจ๋์ ์ค๊ณ๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ํ์ํ ๊ธฐ๋ฅ๋ง ํฌํจํ์ฌ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ๋์ฑ ์ต์ํํ ์ ์์ต๋๋ค. ์ด๋ ์ฝ๋ ํจ์จ์ฑ์ ๋์ด๊ณ ๋ถํ์ํ ์ค๋ฒํค๋๋ฅผ ์ค์ ๋๋ค.
6. ์๋ฒ ์ธก ๋ ๋๋ง(SSR) ์ง์
Inferno๋ ์๋ฒ ์ธก ๋ ๋๋ง(SSR)์ ์ง์ํ์ฌ ๊ฐ๋ฐ์๊ฐ ์๋ฒ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๋๋งํ๊ณ ์ฌ์ ๋ ๋๋ง๋ HTML์ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ผ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ ์ด๊ธฐ ํ์ด์ง ๋ก๋ฉ ์๊ฐ์ ๊ฐ์ ํ๊ณ SEO(๊ฒ์ ์์ง ์ต์ ํ)๋ฅผ ํฅ์์ํต๋๋ค.
7. TypeScript ์ง์
Inferno๋ ๋ฐ์ด๋ TypeScript ์ง์์ ์ ๊ณตํ์ฌ ๊ฐ๋ฐ์๊ฐ ํ์ -์ธ์ดํํ๊ณ ์ ์ง๋ณด์ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก ํฉ๋๋ค. TypeScript์ ์ ์ ํ์ดํ์ ๊ฐ๋ฐ ๊ณผ์ ์ด๊ธฐ์ ์ค๋ฅ๋ฅผ ์ก์๋ด๊ณ ์ฝ๋ ๊ฐ๋ ์ฑ์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
Inferno ๋ React: ์์ธ ๋น๊ต
Inferno๋ React์ ๋ง์ ์ ์ฌ์ ์ ๊ณต์ ํ์ง๋ง, ์ฑ๋ฅ๊ณผ ํน์ ํ๋ก์ ํธ์ ๋ํ ์ ํฉ์ฑ์ ์ํฅ์ ๋ฏธ์น๋ ์ฃผ์ ์ฐจ์ด์ ์ด ์์ต๋๋ค:
์ฑ๋ฅ
์์ ์ธ๊ธํ๋ฏ์ด, Inferno๋ ์ผ๋ฐ์ ์ผ๋ก ๋ ๋๋ง ์๋์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์์ React๋ฅผ ๋ฅ๊ฐํฉ๋๋ค. ์ด ์ฅ์ ์ ํนํ ๋น๋ฒํ UI ์ ๋ฐ์ดํธ์ ๋ณต์กํ ์ปดํฌ๋ํธ ํธ๋ฆฌ๊ฐ ์๋ ์๋๋ฆฌ์ค์์ ๋๋๋ฌ์ง๋๋ค.
๋ฒ๋ค ํฌ๊ธฐ
Inferno๋ React๋ณด๋ค ํจ์ฌ ์์ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด ๋ค์ด๋ก๋ ์๊ฐ์ ์ต์ํํ๋ ๊ฒ์ด ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๋์ ์ ํ์ ๋๋ค.
API ์ฐจ์ด์
Inferno์ API๋ React์ ๊ฑฐ์ ํธํ๋์ง๋ง, ๋ช ๊ฐ์ง ์ฌ์ํ ์ฐจ์ด์ ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Inferno์ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋ ์ด๋ฆ์ ์ฝ๊ฐ ๋ค๋ฆ ๋๋ค (์: `componentWillMount`๊ฐ `componentWillMount`๊ฐ ๋จ). ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ฐจ์ด์ ์ ์ผ๋ฐ์ ์ผ๋ก ์ฝ๊ฒ ์ ์ํ ์ ์์ต๋๋ค.
์ปค๋ฎค๋ํฐ ๋ฐ ์ํ๊ณ
React๋ Inferno๋ณด๋ค ํจ์ฌ ํฐ ์ปค๋ฎค๋ํฐ์ ์ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ React ๊ฐ๋ฐ์๋ฅผ ์ํ ๋ฆฌ์์ค, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์ง์ ์ต์ ์ด ๋ ๋ง๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฌ๋ Inferno์ ์ปค๋ฎค๋ํฐ๋ ๊พธ์คํ ์ฑ์ฅํ๊ณ ์์ผ๋ฉฐ, ์ปค๋ฎค๋ํฐ์์ ์ ์ง ๊ด๋ฆฌํ๋ ์ข์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๊ตฌ๋ค์ ์ ๊ณตํฉ๋๋ค.
์ ๋ฐ์ ์ธ ์ ํฉ์ฑ
Inferno๋ ๋ค์๊ณผ ๊ฐ์ด ์ฑ๋ฅ๊ณผ ๋ฒ๋ค ํฌ๊ธฐ๊ฐ ๊ฐ์ฅ ์ค์ํ ํ๋ก์ ํธ์ ํ์ํ ์ ํ์ ๋๋ค:
- ๊ณ ์ฑ๋ฅ ์น ์ ํ๋ฆฌ์ผ์ด์ : ์ค์๊ฐ ๋์๋ณด๋, ๋ฐ์ดํฐ ์๊ฐํ, ์ธํฐ๋ํฐ๋ธ ๊ฒ์ ๋ฑ ๋น ๋ฅธ ๋ ๋๋ง๊ณผ ๋ฐ์์ฑ์ด ์๊ตฌ๋๋ ์ ํ๋ฆฌ์ผ์ด์ .
- ๋ชจ๋ฐ์ผ ์น ์ ํ๋ฆฌ์ผ์ด์ : ๋ค์ด๋ก๋ ์๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ต์ํํ๋ ๊ฒ์ด ์ค์ํ, ์ ํ๋ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ง ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ๋ฅผ ๋์์ผ๋ก ํ๋ ์ ํ๋ฆฌ์ผ์ด์ .
- ์๋ฒ ๋๋ ์์คํ : ์ ํ๋ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ง ์๋ฒ ๋๋ ์ฅ์น์์ ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ .
- ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ (PWAs): PWAs๋ ๋ค์ดํฐ๋ธ์ ์ ์ฌํ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ฉฐ, Inferno์ ์ฑ๋ฅ์ ๋ ๋ถ๋๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ๊ธฐ์ฌํ ์ ์์ต๋๋ค.
React๋ ํฐ ์ปค๋ฎค๋ํฐ, ๊ด๋ฒ์ํ ์ํ๊ณ, ์ฑ์ํ ๋๊ตฌ๊ฐ ํ์์ ์ธ ํ๋ก์ ํธ์ ์ฌ์ ํ ๊ฐ๋ ฅํ ์ ํ์ ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ ํฉํฉ๋๋ค:
- ๋๊ท๋ชจ ์ํฐํ๋ผ์ด์ฆ ์ ํ๋ฆฌ์ผ์ด์ : ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๊ตฌ๋ฅผ ๊ฐ์ถ ๊ฒฌ๊ณ ํ๊ณ ์ ์ง์๋๋ ํ๋ ์์ํฌ๊ฐ ํ์ํ ํ๋ก์ ํธ.
- ๋ณต์กํ ์ํ ๊ด๋ฆฌ๊ฐ ์๋ ์ ํ๋ฆฌ์ผ์ด์ : React์ ์ํ๊ณ๋ Redux ๋ฐ MobX์ ๊ฐ์ ๊ฐ๋ ฅํ ์ํ ๊ด๋ฆฌ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
- ๊ฐ๋ฐ์ ๊ฒฝํ์ด ์ฐ์ ์ธ ํ๋ก์ ํธ: React์ ์ฑ์ํ ๋๊ตฌ์ ๊ด๋ฒ์ํ ๋ฌธ์๋ ๊ฐ๋ฐ์ ์์ฐ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
Inferno ์์ํ๊ธฐ
Inferno๋ฅผ ์์ํ๋ ๊ฒ์ ๊ฐ๋จํฉ๋๋ค. npm์ด๋ yarn์ ์ฌ์ฉํ์ฌ Inferno๋ฅผ ์ค์นํ ์ ์์ต๋๋ค:
npm install inferno inferno-dom
yarn add inferno inferno-dom
๋ค์์ ๊ฐ๋จํ Inferno ์ปดํฌ๋ํธ ์์ ์ ๋๋ค:
import { render } from 'inferno-dom';
import { Component } from 'inferno';
class Hello extends Component {
render() {
return <h1>Hello, Inferno!</h1>;
}
}
render(<Hello />, document.getElementById('root'));
์ด ์ฝ๋ ์ค๋ํซ์ Inferno ์ปดํฌ๋ํธ์ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ฉฐ, ID๊ฐ 'root'์ธ DOM ์์์ ๊ฐ๋จํ "Hello, Inferno!" ์ ๋ชฉ์ ๋ ๋๋งํฉ๋๋ค.
Inferno์ ๊ณ ๊ธ ๊ฐ๋
1. ์ปดํฌ๋ํธ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋
Inferno๋ ์ปดํฌ๋ํธ ์๋ช ์ฃผ๊ธฐ์ ์ฌ๋ฌ ๋จ๊ณ์ ๊ฐ์ ํ ์ ์๋ ์ผ๋ จ์ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ๋ฉ์๋๋ ์ํ ์ด๊ธฐํ, ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ, ๋ฆฌ์์ค ์ ๋ฆฌ์ ๊ฐ์ ์์ ์ ์ํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฃผ์ ์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
componentWillMount()
: ์ปดํฌ๋ํธ๊ฐ DOM์ ๋ง์ดํธ๋๊ธฐ ์ ์ ํธ์ถ๋ฉ๋๋ค.componentDidMount()
: ์ปดํฌ๋ํธ๊ฐ DOM์ ๋ง์ดํธ๋ ํ์ ํธ์ถ๋ฉ๋๋ค.componentWillUpdate()
: ์ปดํฌ๋ํธ๊ฐ ์ ๋ฐ์ดํธ๋๊ธฐ ์ ์ ํธ์ถ๋ฉ๋๋ค.componentDidUpdate()
: ์ปดํฌ๋ํธ๊ฐ ์ ๋ฐ์ดํธ๋ ํ์ ํธ์ถ๋ฉ๋๋ค.componentWillUnmount()
: ์ปดํฌ๋ํธ๊ฐ ๋ง์ดํธ ํด์ ๋๊ธฐ ์ ์ ํธ์ถ๋ฉ๋๋ค.
2. ์ํ ๊ด๋ฆฌ
Inferno๋ ๋ด์ฅ๋ ์ํ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์ปดํฌ๋ํธ์ ๋ด๋ถ ์ํ๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. this.setState()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ์ ์ํ๋ฅผ ์
๋ฐ์ดํธํ๊ณ ์ฌ๋ ๋๋ง์ ํธ๋ฆฌ๊ฑฐํ ์ ์์ต๋๋ค.
๋ ๋ณต์กํ ์ํ ๊ด๋ฆฌ ์๋๋ฆฌ์ค์ ๊ฒฝ์ฐ, Inferno๋ฅผ Redux๋ MobX์ ๊ฐ์ ์ธ๋ถ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํตํฉํ ์ ์์ต๋๋ค.
3. JSX ๋ฐ ๊ฐ์ DOM
Inferno๋ UI ์ปดํฌ๋ํธ ์์ฑ์ ์ํด JSX๋ฅผ, ์ค์ DOM์ ํจ์จ์ ์ผ๋ก ์ ๋ฐ์ดํธํ๊ธฐ ์ํด ๊ฐ์ DOM์ ํ์ฉํฉ๋๋ค. JSX๋ฅผ ์ฌ์ฉํ๋ฉด JavaScript ์ฝ๋ ๋ด์์ HTML๊ณผ ์ ์ฌํ ๊ตฌ๋ฌธ์ ์์ฑํ์ฌ ์ปดํฌ๋ํธ์ ๊ตฌ์กฐ๋ฅผ ๋ ์ฝ๊ฒ ์ ์ํ ์ ์์ต๋๋ค.
๊ฐ์ DOM์ ์ค์ DOM์ ๊ฒฝ๋ ๋ฒ์ ์ ๋๋ค. ์ปดํฌ๋ํธ์ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉด Inferno๋ ์๋ก์ด ๊ฐ์ DOM์ ์ด์ ๊ฐ์ DOM๊ณผ ๋น๊ตํ์ฌ ์ค์ DOM์ ์ ์ฉํด์ผ ํ ํ์ํ ๋ณ๊ฒฝ ์ฌํญ๋ง ์๋ณํฉ๋๋ค.
4. ๋ผ์ฐํ
Inferno ์ ํ๋ฆฌ์ผ์ด์
์์ ๋ด๋น๊ฒ์ด์
์ ์ฒ๋ฆฌํ๋ ค๋ฉด inferno-router
์ ๊ฐ์ ๋ผ์ฐํ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ฒฝ๋ก๋ฅผ ์ ์ํ๊ณ ๋ด๋น๊ฒ์ด์
์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ปดํฌ๋ํธ์ ๋๊ตฌ ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
5. ํผ(Forms)
Inferno์์ ํผ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ React์์ ํผ์ ์ฒ๋ฆฌํ๋ ๊ฒ๊ณผ ์ ์ฌํฉ๋๋ค. ์ ์ด๋ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ์ฌ ํผ ์ ๋ ฅ์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ ํผ ์ ์ถ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์์์ Inferno: ๊ธ๋ก๋ฒ ์ฌ๋ก
ํน์ ์ฌ๋ก ์ฐ๊ตฌ๋ ํญ์ ์งํํ๊ณ ์์ง๋ง, ๊ธ๋ก๋ฒ ์๊ตฌ๋ฅผ ๋ฐ์ํ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ ์๋๋ฆฌ์ค๋ฅผ ๊ณ ๋ คํด ๋ณด์ญ์์ค:
- ๋์ญํญ์ด ์ ํ๋ ์ง์ญ(์: ๋๋จ์์์, ์ํ๋ฆฌ์นด ์ผ๋ถ)์ ์ํ ๋น ๋ฅธ ๋ก๋ฉ ์ ์ ์๊ฑฐ๋ ์ฌ์ดํธ ๊ฐ๋ฐ: Inferno์ ๋ ์์ ๋ฒ๋ค ํฌ๊ธฐ๋ ์ด๊ธฐ ๋ก๋ฉ ๊ฒฝํ์ ํฌ๊ฒ ๊ฐ์ ํ์ฌ ์ ํ์จ์ ๋์ผ ์ ์์ต๋๋ค. ์ฑ๋ฅ์ ์ค์ ์ ๋๋ค๋ ๊ฒ์ ๋ ๋ถ๋๋ฌ์ด ๋ธ๋ผ์ฐ์ง๊ณผ ๋ ๋น ๋ฅธ ๊ฒฐ์ ํ๋ก์ธ์ค๋ฅผ ์๋ฏธํฉ๋๋ค.
- ์ค๋๋ ํ๋์จ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ๋์๊ตญ ํ๊ต๋ฅผ ์ํ ์ธํฐ๋ํฐ๋ธ ๊ต์ก ํ๋ซํผ ๊ตฌ์ถ: Inferno์ ์ต์ ํ๋ ๋ ๋๋ง์ ์ฑ๋ฅ์ด ๋ฎ์ ์ฅ์น์์๋ ์ ๋์ ์ด๊ณ ๋ฐ์์ฑ ์๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ์ฌ ํ๋ซํผ์ ํจ๊ณผ๋ฅผ ๊ทน๋ํํ ์ ์์ต๋๋ค.
- ๊ธ๋ก๋ฒ ๊ณต๊ธ๋ง ๊ด๋ฆฌ๋ฅผ ์ํ ์ค์๊ฐ ๋ฐ์ดํฐ ์๊ฐํ ๋์๋ณด๋ ์์ฑ: Inferno์ ๊ณ ์ฑ๋ฅ์ ์ง์ฐ์ ์ต์ํํ๋ฉด์ ๋์ฉ๋ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํ์ํ๊ณ ์ ๋ฐ์ดํธํ๋ ๋ฐ ์ค์ํ๋ฉฐ, ์๊ธฐ์ ์ ํ ์์ฌ ๊ฒฐ์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ๋๋ฅ์ ๊ฐ๋ก์ง๋ฅด๋ ํ๋ฌผ์ ์ค์๊ฐ์ผ๋ก ์ถ์ ํ๋ฉด์ ์ผ๊ด๋๊ฒ ๋ถ๋๋ฌ์ด ์ฑ๋ฅ์ ์์ํด ๋ณด์ญ์์ค.
- ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋ถ์์ ํ ์ง์ญ(์: ๋จ๋ฏธ ์๊ณจ ์ง์ญ, ์ธ๋ด ์ฌ)์์ ์ ๋ถ ์๋น์ค์ ์ ๊ทผํ๊ธฐ ์ํ PWA ๊ฐ๋ฐ: ์์ ํฌ๊ธฐ์ ํจ์จ์ ์ธ ๋ ๋๋ง์ ์กฐํฉ์ ์ฐ๊ฒฐ์ด ๊ฐํ์ ์ผ ๋์๋ ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ ์ ๋ขฐํ ์ ์๋ PWA๋ฅผ ๋ง๋๋ ๋ฐ Inferno๋ฅผ ํ๋ฅญํ ์ ํ์ผ๋ก ๋ง๋ญ๋๋ค.
Inferno ์ฌ์ฉ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
- ์ปดํฌ๋ํธ ์ต์ ํ: ์ปดํฌ๋ํธ๊ฐ ์ ์ค๊ณ๋๊ณ ์ฑ๋ฅ์ ์ต์ ํ๋์๋์ง ํ์ธํ์ญ์์ค. ๋ถํ์ํ ์ฌ๋ ๋๋ง์ ํผํ๊ณ ์ ์ ํ ๊ฒฝ์ฐ ๋ฉ๋ชจ์ด์ ์ด์ ๊ธฐ์ ์ ์ฌ์ฉํ์ญ์์ค.
- ์ง์ฐ ๋ก๋ฉ ์ฌ์ฉ: ์ปดํฌ๋ํธ์ ๋ฆฌ์์ค๋ฅผ ์ง์ฐ ๋ก๋ฉํ์ฌ ์ด๊ธฐ ํ์ด์ง ๋ก๋ ์๊ฐ์ ๊ฐ์ ํ์ญ์์ค.
- DOM ์กฐ์ ์ต์ํ: ๊ฐ๋ฅํ ํ ์ง์ ์ ์ธ DOM ์กฐ์์ ํผํ์ญ์์ค. Inferno๊ฐ ๊ฐ์ DOM์ ํตํด DOM ์ ๋ฐ์ดํธ๋ฅผ ์ฒ๋ฆฌํ๋๋ก ํ์ญ์์ค.
- ์ ํ๋ฆฌ์ผ์ด์ ํ๋กํ์ผ๋ง: ํ๋กํ์ผ๋ง ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ์ฝ๋๋ฅผ ์ ์ ํ ์ต์ ํํ์ญ์์ค.
- ์ต์ ์ํ ์ ์ง: ์ต์ ์ฑ๋ฅ ๊ฐ์ ๋ฐ ๋ฒ๊ทธ ์์ ์ ํ์ฉํ๊ธฐ ์ํด Inferno ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ข ์์ฑ์ ์ต์ ์ํ๋ก ์ ์งํ์ญ์์ค.
๊ฒฐ๋ก
Inferno๋ ์๋์ ํจ์จ์ฑ์ด ๊ฐ์ฅ ์ค์ํ ์๋๋ฆฌ์ค์์ React์ ๋นํด ์๋นํ ์ฑ๋ฅ ์ด์ ์ ์ ๊ณตํ๋ ๊ฐ๋ ฅํ๊ณ ๋ค์ฌ๋ค๋ฅํ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. React์ ์ ์ฌํ API๋ React ๊ฐ๋ฐ์๊ฐ ์ฝ๊ฒ ๋ฐฐ์ฐ๊ณ ์ฑํํ ์ ์๊ฒ ํ๋ฉฐ, ๋ชจ๋์ ์ค๊ณ๋ ๊ฐ๋ฐ์๊ฐ ํ์ํ ๊ธฐ๋ฅ๋ง ํฌํจํ ์ ์๋๋ก ํฉ๋๋ค. ๊ณ ์ฑ๋ฅ ์น ์ ํ๋ฆฌ์ผ์ด์ , ๋ชจ๋ฐ์ผ ์ฑ ๋๋ ์๋ฒ ๋๋ ์์คํ ์ ๊ตฌ์ถํ๋ , Inferno๋ ์ฐ์ํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐ ๋์์ด ๋ ์ ์๋ ๋งค๋ ฅ์ ์ธ ์ ํ์ ๋๋ค.
์น ๊ฐ๋ฐ ํ๊ฒฝ์ด ๊ณ์ ์งํํจ์ ๋ฐ๋ผ Inferno๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํํ๊ณ ์ฑ๋ฅ์ ํ๊ณ๋ฅผ ๋ฐ์ด๋์ผ๋ ค๋ ๊ฐ๋ฐ์์๊ฒ ๊ท์คํ ๋๊ตฌ๋ก ๋จ์ ์์ต๋๋ค. ๊ฐ์ ๊ณผ ์ฝ์ ์ ์ดํดํ๊ณ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉด, Inferno๋ฅผ ํ์ฉํ์ฌ ์์น, ์ฅ์น ๋๋ ๋คํธ์ํฌ ์กฐ๊ฑด์ ๊ด๊ณ์์ด ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ์ด์ต์ด ๋๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ๋ฐ์ด๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์ถ๊ฐ ์๋ฃ
- Inferno.js ๊ณต์ ์น์ฌ์ดํธ
- Inferno.js GitHub ๋ฆฌํฌ์งํ ๋ฆฌ
- Inferno.js ๋ฌธ์
- ์ปค๋ฎค๋ํฐ ํฌ๋ผ ๋ฐ ์ฑํ ์ฑ๋